package com.itheima.socketWork03;

import java.io.*;
import java.net.Socket;
import java.util.Scanner;

public class CilentDemo {
    public static void main(String[] args) throws IOException {
        // 将键盘录入一个文件封装成一个方法
        File file = getJpgFile();
        // 创建客户端Socket对象，指定访问的地址和端口号
        Socket socket = new Socket("127.0.0.1", 10001);
        // 创建输入流读取文件数据
        BufferedInputStream input = new BufferedInputStream(new FileInputStream(file));
        // 根据socket获取输出流，将数据发送给服务器
        BufferedOutputStream output = new BufferedOutputStream(socket.getOutputStream());
        // 读写操作
        int len;
        byte[] bys = new byte[1024];
        while ((len = input.read(bys)) != -1) {
            output.write(bys, 0, len);
            output.flush(); // 刷新
        }
        // 文件数据写完，禁用输出流
        socket.shutdownOutput();
        // 关闭读取文件的流
        input.close();

        // 根据socket获取输入流，读取服务端的反馈
        BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
        String result = reader.readLine();
        System.out.println(result);
        // 释放socket资源
        socket.close();
    }

    // 获取jpg图片文件的方法
    private static File getJpgFile() {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一个JPG格式图片文件的路径：");
        while (true) {
            File file = new File(sc.nextLine());
            if (!file.exists()) {
                System.out.println("该文件路径不存在，请重新输入：");
            } else if (file.isDirectory()) {
                System.out.println("您输入的是一个文件夹路径，请重新输入：");
            } else if (file.getName().endsWith(".jpg") || file.getName().endsWith(".JPG")) {
                return file;
            } else {
                System.out.println("您输入文件格式有误，请重新输入");
            }
        }
    }
}
